home *** CD-ROM | disk | FTP | other *** search
/ MPC Internet Wizard / MPC Internet Wizard.iso / tutorial / setup.mst < prev    next >
Text File  |  1995-03-06  |  12KB  |  418 lines

  1. '**************************************************************************
  2. '*                   Runtime Setup
  3. '**************************************************************************
  4. '$INCLUDE 'setupapi.inc'
  5. '$INCLUDE 'mscpydis.inc'    ''System
  6. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  7.  
  8. ''Dialog ID's
  9. CONST WELCOME       = 100
  10. CONST ASKQUIT       = 200
  11. CONST DESTPATH      = 300
  12. CONST EXITFAILURE   = 400
  13. CONST EXITQUIT      = 600
  14. CONST EXITSUCCESS   = 700
  15. CONST OPTIONS       = 800
  16. CONST APPHELP       = 900
  17. CONST VIDUNFIT      = 1000
  18. CONST VIDINSTD      = 1001
  19. CONST AUDUNFIT      = 1002
  20. CONST CHECK         = 2500
  21. CONST SMALLWIN      = 2200
  22. CONST RESTART       = 2600
  23. CONST RESTARTII     = 2700
  24. CONST SMALLDEST     = 6300
  25. CONST BADPATH       = 6400
  26.  
  27. GLOBAL MDEST$
  28. GLOBAL CDEST$
  29. GLOBAL TITLE$
  30. GLOBAL ICONDESC$
  31. GLOBAL ICONRMDESC$
  32.  
  33. ''Bitmap ID
  34. CONST LOGO = 1
  35. GLOBAL SizeReq&  '' Total Disk Size required for installation
  36.  
  37. ''File Types
  38. GLOBAL WinDir$
  39. GLOBAL WinSysDir$
  40. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  41. GLOBAL SrcDir$
  42. GLOBAL CHECKSTATES$
  43. GLOBAL OPTCUR$
  44. GLOBAL AUDIO%
  45. GLOBAL INSTVID%
  46. GLOBAL NTDETECT%
  47.  
  48. DECLARE SUB Install
  49. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  50. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  51. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  52. DECLARE SUB Reboot LIB "iniupd.dll"
  53. DECLARE FUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  54. DECLARE FUNCTION ParaExec LIB "PARASET.DLL" (A$, B$) AS INTEGER
  55. DECLARE FUNCTION GetParaVideo LIB "PARASET.DLL" AS INTEGER
  56. DECLARE FUNCTION GetParaAudio LIB "PARASET.DLL" AS INTEGER
  57. DECLARE FUNCTION ParaWriteDefaults LIB "PARASET.DLL" (A$, B$, C%) AS INTEGER
  58. DECLARE FUNCTION ParaDelAllFiles LIB "PARASET.DLL" (A$) AS INTEGER
  59.  
  60. '' Startup
  61. INIT:
  62.   
  63. ''Paul: Change these constants for different installations
  64.     MDEST$ = "C:\SOFTKEY"
  65.     CDEST$ = "\WTNET"
  66.     TITLE$ = "WinTutor Setup"
  67.     ICONDESC$ = "Exploring the Internet"
  68.     ICONRMDESC$ = "Exploring the Internet Readme"
  69.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  70.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  71.     
  72.     WIN32ENABLED% = 0
  73.     INSTVID% = 0
  74.     OPTCUR$ = "1"
  75.     AUDIO% = 0
  76.    
  77.     MajorVer% = GetWindowsMajorVersion()
  78.     MinorVer% = GetWindowsMinorVersion()
  79.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  80.     WinDir$ = GetWindowsDir()
  81.     WinSysDir$ = GetWindowsSysDir()
  82.  
  83.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  84.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  85.     END
  86.     END IF
  87.  
  88.  
  89.     SetBitmap CUIDLL$, LOGO
  90.     SetTitle TITLE$
  91.  
  92.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  93.     IF szInf$ = "" THEN
  94.        szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  95.     END IF
  96.     ReadInfFile szInf$
  97.  
  98. '' Do welcome dialog
  99. WELCOME:
  100.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  101.     IF sz$ = "CONTINUE" THEN
  102.        UIPop 1
  103.      ELSE
  104.     GOSUB ASKQUIT
  105.     GOTO WELCOME
  106.     END IF
  107.  
  108.  
  109. '' Get destination path dialog
  110. GETPATH:
  111.     SetSymbolValue "EditTextIn", MDEST$
  112.     SetSymbolValue "EditFocus", "END"
  113. GETPATHL1:
  114.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  115.     MDEST$ = GetSymbolValue("EditTextOut")
  116.  
  117.     IF sz$ = "CONTINUE" THEN
  118.         IF IsDirWritable(MDEST$) = 0 THEN
  119.             GOSUB BADPATH
  120.             GOTO GETPATHL1
  121.         END IF
  122.         UIPop 1
  123.     ELSEIF sz$ = "REACTIVATE" THEN
  124.         GOTO GETPATHL1
  125.     ELSEIF sz$ = "BACK" THEN
  126.         UIPop 1
  127.         GOTO WELCOME
  128.     ELSE
  129.         GOSUB ASKQUIT
  130.         GOTO GETPATH
  131.     END IF
  132.  
  133.  
  134. '' Check for space on selected drive
  135.     ClearCopyList
  136.     AddSectionFilesToCopyList "Paragon", SrcDir$, MDEST$+CDEST$
  137.     SizeReq& = GetCopyListCost ("","", "")
  138.     IF SizeReq& <> 0 THEN
  139.     GOSUB SMALLDEST
  140.     GOTO GETPATH
  141.     END IF
  142.  
  143.  
  144. '' Prompt for audio quality
  145. 'OPTION:
  146. '    SetSymbolValue "RadioDefault", OPTCUR$
  147. 'OPTL1:
  148. '    sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  149. '    OPTCUR$ = GetSymbolValue("ButtonChecked")
  150.  
  151. '    IF sz$ = "CONTINUE" THEN
  152. '        UIPop(1)
  153. '    ELSEIF sz$ = "REACTIVATE" THEN
  154. '        GOTO OPTL1
  155. '    ELSEIF sz$ = "BACK" THEN
  156. '        UIPop 1
  157. '        GOTO GETPATH
  158. '    ELSE
  159. '        GOSUB ASKQUIT
  160. '        GOTO OPTION
  161. '    END IF
  162.  
  163. '    IF OPTCUR$ = "2" THEN
  164. '        AUDIO% = 1
  165. '    END IF
  166.  
  167. '' Check for graphics capability and audio drivers loaded
  168.     i% = GetParaVideo()
  169.     IF i% = 1 THEN
  170. VIDT1:
  171.         sz$ = UIStartDlg(CUIDLL$, VIDUNFIT, "FInfo0DlgProc", 0, "")
  172.         IF sz$ = "REACTIVATE" THEN
  173.         GOTO VIDT1
  174.         END IF
  175.         UIPop 1
  176.     ENDIF
  177.  
  178.     i% = GetParaAudio()
  179.     IF i% = 1 THEN
  180. AUDT1:
  181.         sz$ = UIStartDlg(CUIDLL$, AUDUNFIT, "FInfo0DlgProc", 0, "")
  182.         IF sz$ = "REACTIVATE" THEN
  183.         GOTO AUDT1
  184.         END IF
  185.         UIPop 1
  186.     ENDIF
  187.  
  188. '' Prompt for Video for Windows install
  189. VIDINST:
  190.     sz$ = UIStartDlg(CUIDLL$, VIDINSTD, "FInfoDlgProc", APPHELP, HELPPROC$)
  191.     IF sz$ = "CONTINUE" THEN
  192.     INSTVID% = 1
  193.     END IF
  194.     UIPop 1
  195.  
  196.  
  197. '' Check for video size of vidinst
  198.  
  199.    IF INSTVID% = 1 THEN
  200.         ClearCopyList
  201.         AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  202.         AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  203.         AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  204.         AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  205.         AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  206.         AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WinDir$
  207.  
  208.         SizeReq& = GetCopyListCost ("","", "")
  209.         IF SizeReq& <> 0 THEN
  210.         GOSUB SMALLWIN
  211.         END
  212.         END IF
  213.  
  214.         IF OnWindowsNT() THEN
  215.           i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  216.           END
  217.         END IF
  218.         AddSectionFilesToCopyList "Paragon", SrcDir$, MDEST$+CDEST$
  219.     END IF
  220.         
  221. Install
  222.  
  223. '' Restart windows if video installed
  224.   IF INSTVID% = 1 THEN
  225.         RESTRT% = RestartListEmpty ()
  226.         Exe$ = DEST$ + "\_msrstrt.exe"
  227.         Batch$ = DEST$ + "\_mssetup.bat"
  228.         empty$ = ""
  229. RESTART:
  230.     IF RESTRT% = 0 THEN
  231.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  232.        IF sz$ = "REACTIVATE" THEN
  233.       GOTO RESTART
  234.        ENDIF
  235.        I% = ExitExecRestart ()
  236.        RemoveFile Exe$, cmoForce
  237.        RemoveFile Batch$, cmoForce
  238.        END
  239.     ELSE
  240.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  241.        IF sz$ = "CONTINUE" THEN
  242.       I% = ExitWindowsExec (Exe$, empty$)
  243.       IF I% = 0 THEN
  244.          GOTO RESTART
  245.       ELSE
  246.          END
  247.      ENDIF
  248.        ELSEIF sz$ = "EXIT" THEN
  249.       UIPopAll
  250.       END
  251.        ELSEIF sz$ = "REACTIVATE" THEN
  252.       GOTO RESTART
  253.        ELSE
  254.       UIPop 1
  255.        END IF
  256.     END IF
  257.   END IF
  258.  
  259. QUIT:
  260.     ON ERROR GOTO ERRQUIT
  261.  
  262.     IF ERR = 0 THEN
  263.     dlg% = EXITSUCCESS
  264.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfoDlgProc", 0, "")
  265.         IF sz$ = "CONTINUE" THEN
  266.             UIPop 1
  267.         i% = ParaExec(MDEST$+CDEST$,"ptfront")
  268.         END
  269.         ELSEIF sz$ = "REACTIVATE" THEN
  270.             GOTO QUIT
  271.         ELSEIF sz$ = "BACK" THEN
  272.             UIPop 1
  273.         i% = ParaExec(".\", "notepad.exe "+MakePath(MDEST$+CDEST$,"readme.doc"))
  274.         END
  275.         ELSE
  276.                 END
  277.         END IF
  278.     END IF
  279.  
  280.     IF ERR = STFQUIT THEN
  281.     dlg% = EXITQUIT
  282.     ELSE
  283.     dlg% = EXITFAILURE
  284.     END IF
  285. QUITL1:
  286.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  287.     IF sz$ = "REACTIVATE" THEN
  288.     GOTO QUITL1
  289.     END IF
  290.     UIPop 1
  291.     END
  292.  
  293. ERRQUIT:
  294.     i% = DoMsgBox("An installation problem occured, call the product support service", "Setup Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  295.     END
  296.  
  297.  
  298. '' Subroutine ask quit
  299. ASKQUIT:
  300.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  301.  
  302.     IF sz$ = "EXIT" THEN
  303.     UIPopAll
  304. ''        ERROR STFQUIT
  305.     END
  306.     ELSEIF sz$ = "REACTIVATE" THEN
  307.     GOTO ASKQUIT
  308.     ELSE
  309.     UIPop 1
  310.     END IF
  311.     RETURN
  312.  
  313.  
  314. '' Subroutine bad path
  315. BADPATH:
  316.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  317.     IF sz$ = "REACTIVATE" THEN
  318.         GOTO BADPATH
  319.     END IF
  320.     UIPop 1
  321.     RETURN
  322.  
  323. SMALLWIN:
  324.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  325.     IF sz$ = "REACTIVATE" THEN
  326.     GOTO SMALLWIN
  327.     END IF
  328.     UIPop 1
  329.     RETURN
  330.  
  331.  
  332. SMALLDEST:
  333.     sz$ = UIStartDlg(CUIDLL$, SMALLDEST, "FInfo0DlgProc", 0, "")
  334.    IF sz$ = "REACTIVATE" THEN
  335.     GOTO SMALLDEST
  336.    END IF
  337.     UIPop 1
  338.     RETURN
  339.  
  340.  
  341. '**
  342. '** Purpose:
  343. '**     Performs all installation operations.
  344. '** Arguments:
  345. '**     none.
  346. '** Returns:
  347. '**     none.
  348. '*************************************************************************
  349. SUB Install STATIC
  350.  
  351.      IF EXISTS (MDEST$+CDEST$+"\*.*") THEN
  352.         kill MDEST$+CDEST$+"\*.*"
  353.      ENDIF
  354.     SetRestartDir WinDir$
  355.     CopyFilesInCopyList
  356.  
  357. ''Updating WIN.INI and SYSTEM.INI
  358.   IF INSTVID% = 1 THEN
  359.     IF VflatdPresent() = 0 THEN
  360.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  361.     END IF
  362.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  363.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  364.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite
  365.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  366.     I% = DoesIniKeyExist ("system.ini", "Drivers", "VIDC.RT21")
  367.     IF I% = 0  THEN
  368.        CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite
  369.     END IF
  370.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite
  371.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  372.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  373.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  374.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  375.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  376.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  377.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  378.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  379.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  380.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  381.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  382.  
  383. '' Mplayer
  384.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  385.     Run ("profdisp.exe")
  386.   END IF
  387.  
  388.     CreateProgmanGroup "Softkey", "", cmoNone
  389.     ShowProgmanGroup  "Softkey", 1, cmoNone
  390.     CreateProgmanItem "Softkey", ICONDESC$, MakePath(MDEST$+CDEST$,"ptfront"), "", cmoOverwrite
  391.     CreateProgmanItem "Softkey", ICONRMDESC$, "notepad.exe "+MakePath(MDEST$+CDEST$,"readme.doc"), "", cmoOverwrite
  392.     i% = ParaWriteDefaults(SrcDir$, MDEST$+CDEST$, AUDIO%)
  393.  
  394. END SUB
  395.  
  396. '**
  397. '** Purpose:
  398. '**     Appends a file name to the end of a directory path,
  399. '**     inserting a backslash character as needed.
  400. '** Arguments:
  401. '**     szDir$  - full directory path (with optional ending "\")
  402. '**     szFile$ - filename to append to directory
  403. '** Returns:
  404. '**     Resulting fully qualified path name.
  405. '*************************************************************************
  406. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  407.     IF szDir$ = "" THEN
  408.     MakePath = szFile$
  409.     ELSEIF szFile$ = "" THEN
  410.     MakePath = szDir$
  411.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  412.     MakePath = szDir$ + szFile$
  413.     ELSE
  414.     MakePath = szDir$ + "\" + szFile$
  415.     END IF
  416. END FUNCTION
  417.  
  418.